액티비티(Activity) :: 안드로이드 설치 및 개발[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

안드로이드 설치 및 개발
[1]
등록일:2018-07-21 09:47:55 (0%)
작성자:
제목:액티비티(Activity)

이번 시간부터는 드디어 자바를 통해 레이아웃을 제어하는 방법을 배웁니다~
사실상 지금부터가 진짜 안드로이드 프로그래밍이죠!



Hello World를 만들 때 액티비티에 대해서 잠깐 설명했었죠?
오래되어 잊어버린 분들도 있을 수 있으니 다시 한 번 설명하겠습니다.

액티비티는 앱을 구성하는 수많은 화면 중 하나의 화면을 가리키는 말입니다.



여러 개의 뷰가 하나의 액티비티를 이루고, 여러 개의 액티비티가 모여 하나의 앱을 이루는 거죠.

일반적으로 앱은 최소한 한 개 이상의 액티비티를 가지고 있습니다.







 


MainActivity.java 파일로 이동합시다.




 


MainActivity.java는 저번에 설명해드렸듯이 메인 액티비티를 제어하는 자바 코드가 담긴 파일입니다.

역시 IDE가 만들어 준 코드라 그런지 상당히 지저분합니다.






 


실습에 방해 되므로 위와 같이 onCreate만 남기고 다 날려버립시다. :)






 


일단, 액티비티는 위처럼 Activity 클래스를 상속하는 클래스의 형태로 만듭니다.






 


onCreate는 액티비티가 만들어지고 화면에 나타나기 직전에 호출되는 메서드입니다.
초기화 처리를 하기 매우 적합한 곳이기 때문에 액티비티의 99.99%는 이 메서드를 오버라이딩합니다.






 


onCreate의 첫 줄에서는 super 메서드를 호출하여 액티비티의 시스템적인 요소를 초기화 하고 있습니다.






 


다음 줄에서는 setContentView라는 메서드를 호출하고 있는데, 이것은 액티비티에 사용할 레이아웃을 지정하는 메서드로,

이 코드로 인해 메인 액티비티와 우리가 짰던 레이아웃이 연결됩니다.

첫번째 인자로 'R.layout.지정할레이아웃파일이름'을 주면 됩니다.






 

참고로 R.layout.지정할레이아웃파일이름 은 int형 값입니다.


프로젝트에 레이아웃 파일을 추가하면 안드로이드 스튜디오가 자동으로 'R'이라는 클래스에 레이아웃 파일 이름을 추가합니다.



요로코롬 말이죠!


때문에 레이아웃 파일에 공백이나 특수문자 같이 Java에서 변수로 표현할 수 없는 이름을 지정하면 R.java가 통째로 사라져버리

'R.~.~'가 들어간 모든 코드에 빨간 줄이 그어지는 멘붕적인 상황이 발생합니다.

잠깐 'R'에 대한 얘기를 해볼까요?


우리가 짠 레이아웃 파일은 aapt라는 리소스 컴파일러에 의해 컴파일 된 뒤 id를 부여받게 되는데,
그 아이디가 'R'이라는 이름을 가진 클래스에 자동으로 저장됩니다.



R 클래스가 담겨 있는 R.java는 IDE가 자동으로 만들어주는 특수 파일로, 원래는 'gen'이라는 특수 폴더에 상주하고 있어

열어볼 수 있었으나 안드로이드 스튜디오에서는 함부로 조작하지 말라는 것인지 아예 숨겨 버렸네요.
사실 R.java 파일을 건드려서 얻을 수 있는 건 오류밖에 없지만요. -_-...




*****  2015년 1월 4일 추가됨  ***** 



프로젝트 폴더를 뒤적뒤적해서 마침내 R.java를 찾아냈습니다.






 


R 클래스는 이렇게 종류별로 나누어진 수많은 static 이너 클래스로 이루어져 있습니다.


그중 레이아웃과 관련된 id는 layout이라는 이너 클래스에 레이아웃 파일 이름을 딴 int형 필드 형태로 저장됩니다.


자세히 보면 노란 박스친 layout 이너 클래스에 메인 액티비티의 레이아웃 파일이 있는 것을 볼 수 있습니다.

그래서 'R.layout.레이아웃파일이름' 형태로 접근할 수 있는 것이지요.

 

(참고로 레이아웃 파일에 공백이나 특수문자 같이 Java에서 변수로 표현할 수 없는 이름을 지정하면 R.java가 통째로 사라져버리

'R.~.~'가 들어간 모든 코드에 빨간 줄이 그어지는 멘붕적인 상황이 발생합니다.)


 



다시 한번 말씀드리지만, R.layout.activity_main은 그냥 int형 값에 불과합니다.


그리고 R.java는 레이아웃 파일이 변경될 때마다 자동으로 갱신되니 절대 함부로 열어서 편집하지 마세요!

이를 어길 시 발생할 수 있는 일은 장담 불가 


****************************






 


마지막으로 AndroidManifest.xml액티비티의 존재를 알려야 시스템이 액티비티를 인식합니다.


아무리 열심히 레이아웃을 짜고 액티비티 클래스를 구현해도 이곳에 등록하지 않으면

아예 존재 자체가 없는 것으로 간주되어 버립니다.







 


액티비티는 <activity/> 태그의 name 속성을 지정하여 등록합니다.


메인 액티비티는 기본적으로 등록이 되어 있습니다.






 
 


여기서 주의할 점은


사진처럼 액티비티가 앱 패키지와 동일한 패키지에 있을 때는 단순히 .MainActivity를 입력하면 되지만,
액티비티가 예를 들어 'component.ui' 같이 임의의 패키지에 있으면

component.ui.MainActivity 같이 풀 네임을 입력해야 한다는 것입니다.

[본문링크] 액티비티(Activity)
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34745
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.